package com.bite.friend.controller.exam;
import com.bite.common.core.controller.BaseController;
import com.bite.common.core.domain.R;
import com.bite.common.core.domain.TableDataInfo;
import com.bite.friend.domain.exam.ExamRankDTO;
import com.bite.friend.domain.exam.dto.ExamQueryDTO;
import com.bite.friend.service.exam.IExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/exam")
public class ExamController extends BaseController {
    @Autowired
    private IExamService examService;

    //exam/list 半登录，允许游客浏览，访问
    @GetMapping("/semiLogin/list")
    public TableDataInfo list(ExamQueryDTO examQueryDto){
        return   getTableDataInfo( examService.list(examQueryDto));
    }
    @GetMapping("/semiLogin/redis/list")
    public TableDataInfo redisList(ExamQueryDTO examQueryDto){
        return   examService.redisList(examQueryDto);
    }
    @GetMapping("/getFirstQuestion")
    public R<String> getFirstQuestion(long examId){
        //代码逻辑，获取竞赛中题目的顺序列表，排在第一个的题目，返回给前端
        //从redis里面查，查不到找数据库list类型，需要找是哪个竞赛，然后再去找
        //key;e:q:l:examId value:questionId
        return  R.ok(examService.getFirstQuestion(examId));
    }
    @GetMapping("/preQuestion")
    //返回下一道题的questionId,Long会被截断，所以使用String,此处我们要知道竞赛里面的前一题，要知道竞赛
    public R<String>  preQuestion(Long examId,Long questionId){
        //我们需要找顺序，然后才能找上一个或者下一个，redis里面的list是保持插入的顺序的，所以我们只要在redis插入顺序正常的id就好啦。
        //list 数据类型 key：q:l value: questionId
        return  R.ok(examService.preQuestion(examId,questionId));
    }
    @GetMapping("/nextQuestion")
    public R<String>  nextQuestion(Long examId,Long questionId){
        return R.ok(examService.nextQuestion(examId,questionId));
    }
    @GetMapping("/rank/list")
    public TableDataInfo rankList(ExamRankDTO examRankDTO){
        return   examService.rankList(examRankDTO);
    }
}
